package demo3;

public class SingletonDCL {
    // 定义一个全局变量
    private volatile static SingletonDCL instance = null;

    // 构造方法私有化
    private SingletonDCL() {}

    /**
     * 对外提供一个获取对象的方法
     * @return
     */
    public static SingletonDCL getInstance() {
        // 第一次判断是是否需要加锁
        if (instance == null) {
            // 锁加在外面
            synchronized (SingletonDCL.class) {
                if (instance == null) {
                    // 创建对象
                    instance = new SingletonDCL();
                }
            }
        }
        return instance;
    }
}
